除了使用dumpdecrypted去解密APP和framework的内容以外,也可以使用LLDB直接从内存中dump出解密后的模块。
0x1
获取framework文件,查看文件对应的偏移
以下是要执行的命令以及解释:
1 | lemons-iPhone5S:~ root# ps aux | grep WeChat //查看Wechat的沙盒目录 |
0x2
在mac查看MMCommon.framework的加密偏移
1 | cd MMCommon.framework |
0x3
使用LLDB附加越狱机器,查看MMcommon进程的偏移
image list MMCommon
通过如下命令dump出解密后的二进制数据
memory read –force –outfile ~/Desktop/outputStream –binary –count 3928342 16384+0x00000000384829894
- 3928342 是在上述otool -arch 命令中获取到的cryptsize的值,表明当加密数据的的大小
- 16384 是在上述otool -arch命令汇总获取到的cryptoff的值,代表加密的数据在MMCommon中偏移
- 0x00000000384829894 是在上述image list MMCommon中的模块基地址
上述命令执行完成之后会在桌面生成一个outputStream文件
0x4
修复文件,因为dump出来的文件都没有mach-O文件头,所以需要把dump出来的数据放回原来的framework里面,替换原来加密的数据
dd seek=2384834 bs=1 conv=notrunc if=/Users/lemon/Desktop/outputSteam of=./MMCommon
lipo MMCommon -thin arm64 -output MMCommon_arm64
- 2384834是上述otool -hf的时候architecture 1中的offset的值加上16384(加密数据偏移的值),两者相加,得到了写入的加密数据在文件中的偏移值。
- 替换之后,使用lipo 从FAT文件中提取arm64架构的文件。将MMcommon_arm64拖到MachOView中,修改cryptid为00000000。